home *** CD-ROM | disk | FTP | other *** search
/ Aminet 21 / Aminet 21 (1997)(GTI - Schatztruhe)[!][Oct 1997].iso / Aminet / dev / gui / geometryengine.lha / GeometryEngine / Demos / demo.c next >
Encoding:
C/C++ Source or Header  |  1997-08-27  |  4.4 KB  |  141 lines

  1. #include "Geometry.h"
  2.  
  3. /*
  4.   Just a crude demo of Geometry Engine.
  5.  
  6. */
  7.  
  8. struct IntuitionBase *IntuitionBase;
  9. struct Library *GadToolsBase;
  10.  
  11. struct TagItem fonttags[] =
  12. {
  13.   TA_DeviceDPI,100<<16 | 50,
  14.   TAG_DONE
  15. };
  16.  
  17. struct TTextAttr FontAttr =
  18. {
  19.   "cgtimes.font",
  20.   12,
  21.   FSF_TAGGED,
  22.   FPF_DISKFONT,
  23.   fonttags,
  24. };
  25.  
  26. STRPTR CycleLabels[] =
  27. {
  28.   "The wheels",
  29.   "Of the bus",
  30.   "Go round",
  31.   "And round..",
  32.   NULL
  33. };
  34.  
  35. VOID process_window_events(GUI *MyGUI);
  36.  
  37. void main(void)
  38. {
  39.   GUI *MyGUI;
  40.  
  41.   IntuitionBase = (struct IntuitionBase *)OpenLibrary("intuition.library", 37);
  42.   GadToolsBase = OpenLibrary("gadtools.library", 37);
  43.  
  44.   if (MyGUI = GE_CreateGUI(GE_FontAttr, &FontAttr, TAG_DONE));
  45.  
  46.   if (MyGUI->Geom =
  47.     GE_CreateGeometry(GYF_VERT | GYF_RAISED,1,1,
  48.       GE_Child, GE_CreateGeometry(GYF_HORIZ | GYF_RAISED,1,1,
  49.     GE_Child, GE_CreateGeometry(GYF_VERT | GYF_RAISED,0,1,
  50.       GE_Child, GE_CreateGT(1,0,TEXT_KIND, "Some gadgets here...",0,PLACETEXT_IN,GTTX_Border,TRUE,GTTX_Justification, GTJ_CENTER, TAG_DONE),
  51.       GE_Child, GE_CreateGT(0,0,CHECKBOX_KIND,"Check this out",1,PLACETEXT_LEFT,TAG_DONE),
  52.       GE_Child, GE_CreateGT(0,0,CHECKBOX_KIND,"No, check this one",2,PLACETEXT_LEFT,TAG_DONE),
  53.       GE_Child, GE_CreateGT(0,0,CHECKBOX_KIND,"No, ME!",3,PLACETEXT_RIGHT,TAG_DONE),
  54.       GE_Child, GE_CreateGT(1,1,PALETTE_KIND,"Pick a colour",1000,PLACETEXT_ABOVE,GTPA_Depth,MyGUI->DrInfo->dri_Depth,
  55.                                     GTPA_Color,1,
  56.                                     GTPA_IndicatorWidth, 20,
  57.                                     /*GTPA_IndicatorHeight, 8,*/ TAG_DONE),
  58.           TAG_DONE),
  59.     GE_Child, GE_CreateGeometry(GYF_VERT | GYF_RAISED,2,1,
  60.       GE_Child, GE_CreateGT(2,0,BUTTON_KIND,"A Button",4,PLACETEXT_IN,TAG_DONE),
  61.       GE_Child, GE_CreateGT(2,2,LISTVIEW_KIND,"A Listview",5,PLACETEXT_BELOW,GTLV_ScrollWidth,16,TAG_DONE),
  62.       GE_Child, GE_CreateGT(2,0,CYCLE_KIND,"Cycle",6,PLACETEXT_LEFT,GTCY_Labels, CycleLabels, TAG_DONE),
  63.       GE_Child, GE_CreateGT(2,0,INTEGER_KIND,"Number",6,PLACETEXT_LEFT,GTIN_Number,42,GTIN_MaxChars,10, TAG_DONE),
  64.       GE_Child, GE_CreateGT(2,0,NUMBER_KIND,"Magic Number is:",6,PLACETEXT_LEFT,GTNM_Number,42,GTNM_Border,TRUE, TAG_DONE),
  65.           TAG_DONE),
  66.         TAG_DONE),
  67.       GE_Child, GE_CreateGT(1,0,SLIDER_KIND,"Slider",1000,PLACETEXT_LEFT,GTSL_Min, 10, GTSL_Max,100,TAG_DONE),
  68.       GE_Child, GE_CreateGT(1,0,SCROLLER_KIND,"Scroller",1000,PLACETEXT_LEFT,GTSC_Top, 5, GTSC_Visible,10,GTSC_Total, 30, GTSC_Arrows,18,TAG_DONE),
  69.       GE_Child, GE_CreateGT(1,0,BUTTON_KIND,"Another Button",1000,PLACETEXT_IN,TAG_DONE),
  70.     TAG_DONE)
  71.   );
  72.  
  73.   GE_InitGeometry(MyGUI, TAG_DONE);
  74.  
  75.     if (GE_OpenWindow(MyGUI,
  76.         WA_Title, "Geometry Demo",
  77.         WA_Flags, WFLG_SIZEGADGET | WFLG_CLOSEGADGET | WFLG_ACTIVATE |
  78.               WFLG_DEPTHGADGET | WFLG_DRAGBAR | WFLG_SIMPLE_REFRESH,
  79.                 WA_IDCMP, IDCMP_CLOSEWINDOW | IDCMP_REFRESHWINDOW | IDCMP_NEWSIZE | BUTTONIDCMP | IDCMP_SIZEVERIFY,
  80.         TAG_END))
  81.     {
  82.       process_window_events(MyGUI);
  83.  
  84.       GE_CloseWindow(MyGUI);
  85.     }
  86.  
  87.     GE_FreeGUI(MyGUI);
  88.  
  89.   CloseLibrary(GadToolsBase);
  90.   CloseLibrary((struct Library *)IntuitionBase);
  91. }
  92.  
  93. VOID process_window_events(GUI *MyGUI)
  94. {
  95.   struct IntuiMessage *imsg;
  96.   struct Gadget *gad;
  97.   BOOL  terminated = FALSE;
  98.  
  99.   while (!terminated)
  100.   {
  101.     Wait (1 << MyGUI->Win->UserPort->mp_SigBit);
  102.  
  103.     /* Use GT_GetIMsg() and GT_ReplyIMsg() for handling */
  104.     /* IntuiMessages with GadTools gadgets.             */
  105.     while ((!terminated) && (imsg = GT_GetIMsg(MyGUI->Win->UserPort)))
  106.     {
  107.       switch (imsg->Class)
  108.       {
  109.         case IDCMP_GADGETUP:       /* Buttons only report GADGETUP */
  110.           gad = (struct Gadget *)imsg->IAddress;
  111. //          if (gad->GadgetID == MYGAD_BUTTON) Printf("Button was pressed.\n");
  112.           break;
  113.         case IDCMP_CLOSEWINDOW:
  114.           terminated = TRUE;
  115.           break;
  116.         case IDCMP_REFRESHWINDOW:
  117.           /* This handling is REQUIRED with GadTools. */
  118.           GT_BeginRefresh(MyGUI->Win);
  119.       //** Draw Geometry stuff
  120.       GE_RenderGeometry(MyGUI,TAG_DONE);
  121.           GT_EndRefresh(MyGUI->Win, TRUE);
  122.           break;
  123.     case IDCMP_SIZEVERIFY:
  124.       //** Preliminary calculations...
  125.       GE_BeginResizeGeometry(MyGUI,TAG_DONE);
  126.       //** Quick, reply this message -- never keep the user waiting!
  127.       GT_ReplyIMsg(imsg);
  128.       //** Do some more stuff while the user twiddles the size.
  129.       GE_BeginResizeGeometry(MyGUI,TAG_DONE);
  130.       continue;
  131.     case IDCMP_NEWSIZE:
  132.       GE_ResizeGeometry(MyGUI,TAG_DONE);
  133.       GE_RenderGeometry(MyGUI,TAG_DONE);
  134.       break;
  135.       }
  136.       /* Use the toolkit message-replying function here... */
  137.       GT_ReplyIMsg(imsg);
  138.     }
  139.   }
  140. }
  141.